#include <iostream>
using namespace std;

template <class Comparable>
Comparable GetMin(const Comparable &lhs, const Comparable &rhs)
{
	if (lhs < rhs)
	{
		return lhs;
	}
	return rhs;
}

//template <class T, class U>
//T GetMin (T a, U b) {
//  return (a<b?a:b);
//}

int main () 
{
  int i=11, j=6;
  double l=10.5, m=10.8;
  char a = 'a', b='b';

  /*cout << GetMin(l,i) << endl;*/

  cout << GetMin<double>(l,m) << endl;
  cout << GetMin<int>(i,m) << endl;
  cout << GetMin<char>(a,b) << endl;
  cout << GetMin<double>(a,b) << endl;
  return 0;
}